import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

/**
 * Test11
 */
public class Test11 {
  // 定义泛型方法
  // 定义⼀个通⽤的(带泛型)的⽅法，该⽅法可以返回
  // Collection集合中的最⼤值
  // 修饰符 public static
  // 泛型方法 泛型类型的参数声明 T是一个类型的占位符 <T extends Comparable<T>>
  // extends Comparable<T> 必须要实现Comparable接口 并且接口也要接收T类型的参数
  // T 是方法getMaxValue的返回值类型
  // getMaxValue 是 方法名
  // (Collection<T> collection) 形参列表
  public static <T extends Comparable<T>> T getMaxValue(Collection<T> collection) {
    T maxValue = null;
    // 遍历集合 比较大小
    for (T t : collection) {
      maxValue = t;
    }
    for (T t : collection) {
      if (t.compareTo(maxValue) > 0) {
        maxValue = t;
      }
    }
    return maxValue;
  }

  public static void main(String[] args) {
    List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5, 20, 6, 7, 8, 9, 10));
    Integer max1 = getMaxValue(list1);
    System.out.println(max1);
    List<String> list2 = new ArrayList<String>(Arrays.asList("1", "10", "100", "2"));
    String max2 = getMaxValue(list2);
    System.out.println(max2); // 2
  }
}